﻿using NicoView.Model.Service.Broadcast;
using NicoView.Model.Service.Comments;
using NicoView.Model.Service.Events;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NicoView.Model.Service
{
    /// <summary>
    /// サービスタイプ
    /// </summary>
    public enum NicoServiceType
    {
        /// <summary>
        /// 生放送
        /// </summary>
        Live,
    }

    /// <summary>
    /// ニコニコサービスインターフェース
    /// </summary>
    public interface INicoService : IDisposable, INotifyPropertyChanged
    {
        /// <summary>
        /// コメント送信受信を行うクライアント
        /// </summary>
        INicoCommentClient CommentClient { get; }

        /// <summary>
        /// ニコニコサービス情報
        /// </summary>
        INicoServiceInfo ServiceInfo { get; }

        NicoServiceType ServiceType { get; }

        /// <summary>
        /// 経過時間
        /// </summary>
        TimeSpan ServiceElapsedTime { get; set; }

        /// <summary>
        /// サービス終了時間か判定
        /// </summary>
        bool IsEndServiceTime { get; }

        /// <summary>
        /// 視聴者数
        /// </summary>
        int WatchCount { get; }

        /// <summary>
        /// コメント数
        /// </summary>
        int CommentCount { get; }

        /// <summary>
        /// アクティブ人数
        /// </summary>
        int ActiveWatchCount { get; }

    }
}
